These disk images contain the Apple II type-in programs from Compute! Magazine, Issues 86-90. The programs included are listed below. All programs are both DOS and ProDOS unless indicated with [D] for DOS-only or [P] for ProDOS-only.

#86: Weather Wizard, Disk Expander [D], Print Shop Converter [D], Auto-Display Hi-Res Picture Maker
#87: climber 5, Compress and Decompress [P], Chaining Programs in Applesoft BASIC, Easy Language Drill
#88: Monte Carlo, Audio Recorder for Apple II, Applesoft Line Lister
#89: Marbles, Chrome [D], Double-Duty DOS [P]
#90: The Hermit, Chrome II [D]
plus Proofreader and MLX

For more documentation, instructions, and commentary, read on!

============================
  Compute Type-In Programs

        Issues 86-90
  July 1987- November 1987
============================

COMPUTE! magazine is a classic computing magazine which, in its heyday, published a variety of type-in programs for the Commodore 64/128, Apple II, Atari 400/800, IBM PC, and other 8-bit platforms. Typically each month's issue would feature a game, which was available on most of the supported platforms, and a variety of utilities. I recently discovered that archive.org has scans of all of the COMPUTE! back issues and decided to type in the programs there.

These disk images contain all of the Apple II type-in programs for five issues (86-90). There are two, one DOS 3.3 disk and one ProDOS 1.1.1 disk. These are mostly identical, although there are a few programs which only work under one OS or the other, and so are omitted from the other disk. On the ProDOS disk, I've also sorted the separate issues into their own subdirectories. Filenames may also be slightly different between the DOS 3.3 and ProDOS versions due to the stricter ProDOS naming restrictions.

Each disk includes a menu program which will allow you to select and run the main programs of interest. However, each disk includes many files which are not designed to be run directly (for instance, binary files loaded in by another program, or BASIC files which exist only to make binary files). This listing includes information on all programs on the disk.

I've also included, for each program, a very brief summary of its function and how to use it, but for full details, please consult the original article.

Why am I typing in these nearly 30-year-old programs? Well, it's mostly because I enjoyed doing this as a kid, and I'd like to make sure that these are preserved for the future.

Note that I created these disks using an emulator (mostly AppleWin, although I also tried using MESS for some checks). If you're not lucky enough to still have a functional Apple II around, you'll also need an emulator -- I recommend AppleWin for Windows users, and have heard good things about Virtual ][ for Macs.
 -- Paul Lujan, December 2014

==================
Programs and Notes
==================

First there is HELLO (STARTUP for ProDOS), which is the main menu program.

The next two programs are PROOFREADER and MLX, which were included in most COMPUTE! issues.

PROOFREADER is the Automatic Proofreader, which was included in all COMPUTE! issues starting with #62. It displays a checksum whenever you type in a BASIC line, which can be compared with the printed value to check that you had entered it correctly.

MLX is the Apple machine language entry program, which allowed you to conveniently enter ML listings in hexadecimal form. The printed listings included an extra checksum byte, which the program would check against the computed checksum to make sure the line had been entered correctly. Note that the version here is not quite the one printed in the magazine -- see the detailed notes at the end.

--------------------
Issue 86 (July 1987)
--------------------
archive.org link: https://archive.org/details/1987-07-compute-magazine

This contains the following programs:

* p. 36: Weather Wizard, by John R. Wetsch (DOS and ProDOS)
  https://archive.org/stream/1987-07-compute-magazine/Compute_Issue_086_1987_Jul#page/n37/mode/2up

Weather Wizard is a simple utility which delivers a weather forecast based on the wind direction, barometric pressure, clouds, and humidity. RUN WEATHER WIZARD (or RUN WEATHER.WIZARD in ProDOS) to start the process.

* p. 81: Disk Expander, by Boris Troyanovsky (DOS only)
  https://archive.org/stream/1987-07-compute-magazine/Compute_Issue_086_1987_Jul#page/n81/mode/2up

Disk Expander will format a DOS 3.3 disk with an extra track, increasing the storage available by 16 sectors. It appears to work correctly even in emulation. RUN DISK EXPANDER to begin.

Note that this utility does essentially the same thing as Apple Disk Booster (issue #66), except it only adds one additional track.

* p. 93: Print Shop Converter, by Lee Swoboda (DOS only)
  https://archive.org/stream/1987-07-compute-magazine/Compute_Issue_086_1987_Jul#page/n93/mode/2up

Print Shop Converter is a utility for converting hi-res graphics to or from the format used by Print Shop. It also includes the ability to save hi-res graphics in a compressed format to save disk space. RUN PSCONVERTER to start the program. CV is the binary file containing the machine-language routines used by the converter.

Note that the magazine just calls this utility "Converter", but since there are other programs which use this name (e.g. "Converter" in issue #95, which converts text to binary files), I've called it "Print Shop Converter" here to try to make things a little less confusing.

* p. 100: Auto-Display Hi-Res Picture Maker, by Jaideep Vijan (DOS and ProDOS)
  https://archive.org/stream/1987-07-compute-magazine/Compute_Issue_086_1987_Jul#page/n101/mode/2up

This utility allows you to take a hi-resolution picture and make a BRUNable version which will automatically display that picture, with a variety of different effects available for the display process. RUN AUTO.HIRES.PIC to use it. The program includes instructions.

----------------------
Issue 87 (August 1987)
----------------------
archive.org link: https://archive.org/details/1987-08-compute-magazine

This contains the following programs:

* p. 42: Climber 5, by James Rogers (DOS and ProDOS)
  https://archive.org/stream/1987-08-compute-magazine/Compute_Issue_087_1987_Aug#page/n43/mode/2up

Climber 5 is an arcade game in which you must dodge various obstacles to retrieve the baseball at the top left of the screen. BRUN CLIMBER5 to play. Use IJKL to move, U and O to perform a somersault left or right, and space to jump in place.

* p. 87: Compress and Decompress, by Jason Coleman (ProDOS only)
  https://archive.org/stream/1987-08-compute-magazine/Compute_Issue_087_1987_Aug#page/n87/mode/2up

Compress and Decompress is a pair of utilities to compress and decompress hi-res graphics screens to save space on your disk. RUN COMPRESS to start the compression process. Note that compressing will replace the original file with the compressed version. BRUN DECOMPRESS to install the DECOMPRESS command, which you can use simply by typing DECOMPRESS filename[,slot][,drive][,address]. Note that you must be in HGR mode first to actually see the decompressed picture!

* p. 106: Chaining Programs in Applesoft BASIC, by Richard J. Kaufman (DOS and ProDOS)
  https://archive.org/stream/1987-08-compute-magazine/Compute_Issue_087_1987_Aug#page/n107/mode/2up

This pair of programs is a simple demonstration of how one program can execute another in such a way that the variables from the first program are passed to the second. They are called PROGRAM 1 and PROGRAM 2 (PROGRAM.1 and PROGRAM.2 in ProDOS); RUN PROGRAM 1 to watch the demo.

* The reader feedback section (p. 10-11) includes directions on how to make a simple language drill program. Although Applesoft BASIC isn't listed as one of the compatible languages, it still works just fine, so I've included it here. RUN LANGUAGE DRILL (RUN LANGUAGE.DRILL in ProDOS) to run it.
https://archive.org/stream/1987-08-compute-magazine/Compute_Issue_087_1987_Aug#page/n11/mode/2up

-------------------------
Issue 88 (September 1987)
-------------------------
archive.org link: https://archive.org/details/1987-09-compute-magazine

This contains the following programs:

* p. 30: Monte Carlo, by Thomas Carlson (DOS and ProDOS)
  https://archive.org/stream/1987-09-compute-magazine/Compute_Issue_088_1987_Sep#page/n31/mode/2up

Monte Carlo is a card game where the object is to remove all the cards from the grid. You do this by selecting pairs of adjacent matching cards (horizontally, vertically, or diagonally). When this pair is removed, the other cards are moved left to fill the holes and new cards are dealt into the bottom-right. Use the arrow keys to move and RETURN to select cards. Three difficulty levels, which determine the size of the grid, are available. RUN MONTE CARLO (RUN MONTE.CARLO in ProDOS) to play. CARDPLOT.OBJ0 contains the ML code for drawing the cards.

* p. 86: Audio Recorder for Apple II, by Wing Shum (DOS and ProDOS)
  https://archive.org/stream/1987-09-compute-magazine/Compute_Issue_088_1987_Sep#page/n89/mode/2up

Audio Recorder is a clever utility which takes advantage of the Apple II's cassette-in port to provide a simple sound recording functionality. To use it, BLOAD RECORDER, then use CALL 768 to record a sound (you'll get about 40 seconds with the default settings) and CALL 823 to play it back. The resulting sound can be saved under DOS 3.3 with POKE 43364,255:BSAVE filename,A$800,L$8E00 or simply BSAVE filename,A$800,L$8E00 under ProDOS.

Although this program is not very useful under AppleWin, since it doesn't include an emulated cassette-in port, it works just fine under MESS, which does -- you can use any .wav file as the sound in, allowing you to easily digitize sounds to your emulated Apple II.

* p. 95: Applesoft Line Lister, by Bruce E. Howell (DOS and ProDOS)
  https://archive.org/stream/1987-09-compute-magazine/Compute_Issue_088_1987_Sep#page/n97/mode/2up

Applesoft Line Lister installs a new listing mode which makes Applesoft listings more readable by adding a line break at each colon. BRUN LISTER to install the new command, and then use & to actually activate the new listing mode. PR#0 (or PR#3) or Ctrl-Reset will deactivate the enhanced lister. LISTER.MAKE is the BASIC program which creates the actual binary program.

* The reader feedback section (p. 10) includes some discussion on how tokenized BASIC is stored in memory. There isn't a program here, but the discussion may be of interest.
https://archive.org/stream/1987-09-compute-magazine/Compute_Issue_088_1987_Sep#page/n11/mode/2up

-----------------------
Issue 89 (October 1987)
-----------------------
archive.org link: https://archive.org/details/1987-10-compute-magazine

This contains the following programs:

* p. 35: Marbles, by Stephen Stout; Apple II version by Tim Victor (DOS and ProDOS)
  https://archive.org/stream/1987-10-compute-magazine/Compute_Issue_089_1987_Oct#page/n35/mode/2up

Marbles is an arcade game where you try to catch marbles in your bucket. Each marble is worth one point for each dot that it travels over. Use a paddle or joystick to move the bucket and press the button to change the direction of the arrows in the maze. You must catch at least 20 of the marbles each level to advance. The space bar pauses. BRUN MARBLES to play.

* p. 66: Chrome, by Zachary T. Smith (DOS only)
  https://archive.org/stream/1987-10-compute-magazine/Compute_Issue_089_1987_Oct#page/n67/mode/2up

Chrome is a powerful utility which adds some new commands to Applesoft BASIC to make working with double hi-resolution graphics easier and faster. To install these commands, PR#3 first and then BRUN CHROME (I've also created a simple wrapper script to perform these tasks -- EXEC LOAD.CHROME to use it). This adds the new commands HGR3, HGR4, DOUBLE, COLOR, ELLIPSE, and SHAPE, and extends the functionality of HPLOT, HCOLOR=, and COLOR=. See the article for full documentation. After installing Chrome, RUN CHROME DEMO to see a demo of the new functionality (EXEC RUN.CHROME.DEMO will install Chrome and run the demo in one step).

Note that you must install Chrome before writing or listing any program using these new keywords; otherwise, Applesoft will not understand the new commands.

* p. 90: Double-Duty DOS, by Jason Coleman (ProDOS only)
  https://archive.org/stream/1987-10-compute-magazine/Compute_Issue_089_1987_Oct#page/n91/mode/2up

Double-Duty DOS is a utility which allows ProDOS to read from, write to, and catalog DOS 3.3 disks. To install it, simply BRUN DOUBLE.DOS. This adds three new commands: DCAT catalogs a DOS disk, DLOAD loads a file from a DOS disk (either Applesoft or binary), and DSAVE saves a file to a DOS disk (again, either Applesoft or binary, with the latter requiring A and L arguments as usual).

* The reader feedback section has two snippets which may be of interest. The first (p. 10) is a very simple discussion of variable operators in BASIC:
https://archive.org/stream/1987-10-compute-magazine/Compute_Issue_089_1987_Oct#page/n11/mode/2up
The second has instructions for how to read a mouse in Applesoft BASIC:
https://archive.org/stream/1987-10-compute-magazine/Compute_Issue_089_1987_Oct#page/n13/mode/2up

------------------------
Issue 90 (November 1987)
------------------------
archive.org link: https://archive.org/details/1987-11-compute-magazine

This contains the following programs:

* p. 44: The Hermit, by Eric Bryant (DOS and ProDOS)
  https://archive.org/stream/1987-11-compute-magazine/Compute_Issue_090_1987_Nov#page/n45/mode/2up
[includes corrections from CAPUTE! in Issue #92: see https://archive.org/stream/1988-01-compute-magazine/Compute_Issue_092_1988_Jan#page/n79/mode/2up ]

The Hermit is a text adventure in the spirit of the classic Infocom games (although much simpler). Your goal is to find the ten treasures hidden somewhere on the hermit's property, deposit them in a safe location, and escape with your treasures. RUN HERMIT to play. See the article for a more detailed backstory, a list of commands, and hints, if you need them.

* p. 89: Chrome II, by Zachary T. Smith (DOS only)
  https://archive.org/stream/1987-11-compute-magazine/Compute_Issue_090_1987_Nov#page/n89/mode/2up

Chrome II extends Chrome (from the previous issue) by adding even more commands and functionality. New commands include LINE, AREA, FILL, REFILL, SETPTN, and AUXMOVE, and the functionality of HPLOT and ELLIPSE is extended. See the article for full documentation. To install, PR#3, BLOAD CHROME, and BRUN CHROME II (or just use the wrapper script I've provided: EXEC LOAD.CHROMEII to do it in one step). After installing, RUN CHROME II DEMO to see some of the new functionality instead (or just EXEC RUN.CHROMEII.DEMO to install Chrome II and run the demo).

Like for Chrome, you must install Chrome II before writing or listing any program using these new keywords; otherwise, Applesoft will not understand the new commands.

* The reader feedback section (p. 13) includes some documentation on how to use POKEs to change the character used for the cursor on an Apple with 80-column capability (not necessarily in 80-column mode):
https://archive.org/stream/1987-11-compute-magazine/Compute_Issue_090_1987_Nov#page/n13/mode/2up

===================
Corrections & Notes
===================

While I've generally tried to match the printed listings exactly (including later corrections when appropriate), there are a few cases where I've made a few corrections of my own.

* In the first version of MLX (introduced in issue #61 with SpeedScript for Apple II), the line which saves the binary file (line 200) contains a bug: the length is calculated as (end - start) rather than the correct (end - start + 1). In most MLX programs this is harmless, since the last few bytes are just padding to make the program length an even multiple of 8. However, there are some cases where this causes problems. This was fixed in issue #88 (the first issue where MLX included Proofreader checksums), without any notice that anything had changed. Then, in issue #93 (just three issues before COMPUTE! ended type-in programs entirely), the version of MLX changed to "MLX V1.1". This introduced occasional garbage collection (which presumably helped out in very long typing sessions), but re-introduced the length bug!

So, the version here is a version which was never actually printed -- it combines the bug fix in the issue #88 version with the improvements in V1.1, so I've labeled it as V1.2.

* Print Shop Converter (#86):

The error-handling code in lines 440-450 and again in 530-540 is broken. The routine called by CALL 768 is supposed to be called in an error-handling routine (it is the routine described in the Applesoft BASIC Reference Manual, p. 82), but the way the code is written, the call happens regardless of whether an error happens or not. This means that if you load the file without an error, the internal state of BASIC gets scrambled and it will crash. (Ironically, the program works fine if you enter a bad file name the first time through.)

This is easily fixed by changing to:
425 CALL 768
430 GOSUB 1000
440 ONERR GOTO 425
and removing the CALL 768 from line 450; similarly in lines 530-540.

Unfortunately, one issue still remains: if you perform a conversion, start a new one, and then enter a bad filename (or otherwise cause an error), the program will abruptly stop rather than correctly handle the error. This appears to be due to something caused by the ML routines that the program uses for the actual conversion, but I couldn't track down the source of the error. Fortunately, this is not a showstopper like the preceding bug.

* In Chaining Programs (#87), I've changed the filenames in the ProDOS version to conform to the ProDOS naming requirements.

* In Applesoft Line Lister (#88), the maker program (LISTER.MAKER) has the common issue that the length specified in the save command (line 50) is short by one byte. Since the last three bytes look like they're junk anyway, this is unlikely to matter, but I've changed L$81 to L$82 anyway.

* In the Chrome demo (#89), I fixed a small typo in L340.

* The Hermit (#90):

The printed listing contains many cases where the spacing is not right, causing the line breaks to fall in wrong places. I've fixed all of these. In addition, the copy present on the official COMPUTE! disk looks like it was typed in by hand, and contains many typos, so it's not a perfect reference either (although it does also fix the spacing issues in most cases). I've made some changes to match the disk copy where it's better:
- line 200: removed extraneous set of single quotes
- line 1240: used ; instead of + to avoid expensive string concatenation
- line 3210: removed stray ; at end of line
- line 4360: added space before "absolutely nothing"
- line 4800: removed stray , at end of description
In addition, I've made some extra changes of my own to fix a few issues:
- line 3800: changed "has peculiar taste" to "has a peculiar taste"
- line 5230: changed "small chamber" to "in a small chamber"

* For Chrome II (#90), since the binary file occupies the same memory area as BASIC programs normally do, trying to enter or view it with MLX will fail. You need to enter POKE 104,32:POKE 8192,0:NEW first.

* The launcher uses EXEC files for loading Chrome and Chrome II and running their demos, since they overwrite the area of memory used for BASIC and thus can't be run directly from the launcher. These EXEC files are simply the suggested startup script given in the articles, followed by RUN CHROME DEMO or RUN CHROME II DEMO for the scripts to run the demo.


==============
Other Versions
==============

These programs have been typed in by me directly from the printed version. However, the disks for these issues are also available on the Asimov archive (issues 86-87 on the Jun-Aug 87 disk, and issues 88-90 on the Sep-Nov 87 disk). Since the versions provided on the disks can differ from the printed versions (sometimes for good reasons, and sometimes for no apparent reason at all), I ran a check to see how the two versions compare. The disks include both a DOS side and a ProDOS side; sometimes, a program can be different on the two sides (usually something insubstantial, like a difference in REMarks) for no reason. It makes me wonder if they actually typed in both versions by hand separately.

(Most of the differences between the printed and disk versions don't have any actual effect on the program -- cases where the spacing in REM or DATA statements is different, or places where very long lines have been broken into two in the printed listing, or cases where lowercase letters have been uppercased. I don't note these individually.)

(#86)
- Weather Wizard: In the printed version, line 560 calls GOSUB 1480, the routine for getting real numbers. In the disk version, it calls GOSUB 1390 instead, the routine for reading integer numbers. While you're probably unlikely to need fractions of a percent on your humidity, it seems like there's no reason not to accept them. The disk version also includes a few typos which appear to have not been caught.
- Disk Expander: The disk version includs a copyright notice at the beginning.
- Print Shop Converter: For the BASIC program, no substantial differences other than the fixes mentioned above. For CV, the printed version ends at $6C08, while the disk version ends at $6C07. This is probably just an attempt to compensate for the MLX bug mentioned above since $6C07 appears to be the actual end of the program.
- Auto-Display Hi-Res: No substantial differences.

(#87)
- Climber 5: The printed version runs through $1EBF, while the disk version goes through $1FFF. The additional bytes are all zeroes.
- Compress: The help text printed is slightly different between the two versions.
- Decompress: The printed version ends at $2247, while the disk version ends at $23FF. The additional bytes are all zeroes.
- Chaining Programs: The disk version calls the two files CHAIN1.AUG and CHAIN2.AUG, so the DOS calls in the programs are changed appropriately, but otherwise there is no difference.

(#88)
- Monte Carlo: No differences in the BASIC program. In CARDPLOT.OBJ0, the printed version ends at $831F, while the disk version ends at $8319. The extra bytes are clearly not significant.
- Audio Recorder: The printed version ends at $036C, while the disk version ends at $036B. The extra byte is a zero in any case.
- Applesoft Line Lister: The printed and disk versions are identical, although as noted above, I've corrected the length in my version.

(#89)
- Marbles: The printed version ends at $2A17, while the disk version ends at $2A13. The extra bytes are just padding to make the last line end on a multiple of 8.
- Chrome: The printed version ends at $1FA7, while the disk version ends at $1FA2. Again, this is just padding. The demos are the same.
- Double-Duty DOS: No difference.

(#90)
- The Hermit: See the discussion above.
- Chrome II: For the binary, the printed version ends at $1347, while the disk version ends at $1343. This is presumably just padding again. In the demo, the disk version includes an extra line 521 HOME:VTAB 22.

There are also a couple of other disks on the Asimov archive which also contain some of these programs: the Compute Best of Apple disk has Climber 5, Compress/Decompress, and Chaining Programs. These are all identical to the versions on the Sep-Nov 87 disk (except that the filenames in the chain programs have been changed again). In addition, the Typed-In Programs from Compute disk also includes Climber 5, which also matches the version on the Sep-Nov 87 disk.
